/*
 * Copyright 2006-2009 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package asphalt2.processor
{
	import asphalt2.control.IControl;
	import asphalt2.event.ModulePageContainerEvent;
	import asphalt2.event.PageContainerEvent;
	
	import mx.modules.ModuleLoader;
	/**
	 * 画面遷移を伴うプロセッサー
	 * @author c9katayama
	 **/
	public class BaseModuleTransitionProcessor extends BasePageTransitionProcessor implements IPageTransitionProcessor
	{
		protected var _modulePath:String;
		protected var _nextPageClassName:String;
		/**
		 * @param control コントロールクラス
		 * @param modulePath 次に表示するモジュールパス
		 * @param pageContainerId 表示対象のPageContainerのid nullの場合、自分の親に対して画面入れ替えをします。
		 * @param parameters 次に表示するページに対してセットするプロパティ　このプロパティを使って、画面間のデータを受け渡しできます。
		 */
		public function BaseModuleTransitionProcessor(control:IControl, 
													modulePath:String,
													pageContainerId:String=null,
													parameters:Object=null,
													nextPageClassName:String = null)		
		{
			super(control,ModuleLoader,pageContainerId,parameters);
			_modulePath = modulePath;
			_nextPageClassName = nextPageClassName;
		}
		
		protected override function createPageContainerEvent(targetPageContainerId:String):PageContainerEvent{
			return new ModulePageContainerEvent(targetPageContainerId,_modulePath,parameters,nextPageClassName);
		}
		
		public function set nextPageClassName(value:String):void{
			_nextPageClassName = value;
		}
		public function get nextPageClassName():String{
			return _nextPageClassName;			
		}		
	}
}